//json请求
function SyncJson(apiUrl,jsonData){
    console.log(apiUrl);
    return new Promise((resolve,reject)=>{
        $.ajax({
            //请求方式
            type:'POST',
            headers: {'Accept':"application/json,text/plain,*/*"},
            //发送请求的地址
            contentType:"application/json",
            url:apiUrl,
            //服务器返回的数据类型
            dataType:'json',
            //发送到服务器的数据，对象必须为key/value的格式，jquery会自动转换为字符串格式
            data:(jsonData!=null && jsonData!="")?JSON.stringify(jsonData):null,
            success:function(res){
                //console.log("请求结果:"+res);
                resolve(res);
            },
            error:function(err){
                //请求失败函数内容
                //console.log("请求接口失败",err);
                reject(err);
            }
        });
    });
}


//data: { name:"Donald", town:"Ducktown" }
function getRequest(URL,data){
    const p=new Promise((resolve, reject) => {
        $.get(URL,data,function(res){
            resolve(res);
        });
    });
    return p;
}


//表单二进制数据file请求
function SyncAjaxRequest(apiUrl,data,productNo){
    return new Promise((resolve,reject)=>{
        $.ajax({
            //请求方式
            type:'POST',
            headers: {
                'token':myStorage.getItem("token"),
                'productNo':productNo
            },
            //发送请求的地址
            //而contentType默认为"application/x-www-form-urlencoded"，这个时候加上文件上传，格式化后请求参数中的文件数据则会错乱，导致无效。
            // 但是将contentType设置为"multipart/form-data"的话，常规数据又会无效。
            // 通过这个意思去理解，那么想要得效果就是希望ajax请求的时候不要去转换请求数据，请求的时候是什么就传什么，交给后端去解析请求参数就可以了。
            // 因此将processData设置为false，不让它去转换发送数据，将contentType设置为false，不指定内容类型。
            contentType: false,
            processData: false, //processData 默认为true，也就是会将请求参数转换为contentType匹配的格式进行请求
            cache: false,
            url:(apiUrl.indexOf("http")===-1)?ServerIP+apiUrl:apiUrl,
            //预期服务器返回的数据类型
            dataType:'json',
            data:data, // JSON.stringify(data)  //发送到服务器的数据，对象必须为key/value的格式，jquery会自动转换为字符串格式
            success:function(res){
                console.log("请求接口成功",res);
                resolve(res);
            },
            error:function(err){
                //请求失败函数内容
                console.log("请求接口失败",err);
                reject(err);
            }
        });
    });
}
function SyncFirstClassAjaxRequest(apiUrl,data){
    return new Promise((resolve,reject)=>{
        $.ajax({
            //请求方式
            type:'POST',
            headers: {
                'token':myStorage.getItem("token"),
            },
            //发送请求的地址
            //而contentType默认为"application/x-www-form-urlencoded"，这个时候加上文件上传，格式化后请求参数中的文件数据则会错乱，导致无效。
            // 但是将contentType设置为"multipart/form-data"的话，常规数据又会无效。
            // 通过这个意思去理解，那么想要得效果就是希望ajax请求的时候不要去转换请求数据，请求的时候是什么就传什么，交给后端去解析请求参数就可以了。
            // 因此将processData设置为false，不让它去转换发送数据，将contentType设置为false，不指定内容类型。
            contentType: false,
            processData: false, //processData 默认为true，也就是会将请求参数转换为contentType匹配的格式进行请求
            cache: false,
            url:(apiUrl.indexOf("http")===-1)?ServerIP+apiUrl:apiUrl,
            //预期服务器返回的数据类型
            dataType:'json',
            data:data, // JSON.stringify(data)  //发送到服务器的数据，对象必须为key/value的格式，jquery会自动转换为字符串格式
            success:function(res){
                console.log("请求接口成功",res);
                resolve(res);
            },
            error:function(err){
                //请求失败函数内容
                console.log("请求接口失败",err);
                reject(err);
            }
        });
    });
}

function SyncFirstClassAjaxRequestById(apiUrl,data,firclassId){
    return new Promise((resolve,reject)=>{
        $.ajax({
            //请求方式
            type:'POST',
            headers: {
                'token':myStorage.getItem("token"),
                'firstClassId':firclassId
            },
            //发送请求的地址
            //而contentType默认为"application/x-www-form-urlencoded"，这个时候加上文件上传，格式化后请求参数中的文件数据则会错乱，导致无效。
            // 但是将contentType设置为"multipart/form-data"的话，常规数据又会无效。
            // 通过这个意思去理解，那么想要得效果就是希望ajax请求的时候不要去转换请求数据，请求的时候是什么就传什么，交给后端去解析请求参数就可以了。
            // 因此将processData设置为false，不让它去转换发送数据，将contentType设置为false，不指定内容类型。
            contentType: false,
            processData: false, //processData 默认为true，也就是会将请求参数转换为contentType匹配的格式进行请求
            cache: false,
            url:(apiUrl.indexOf("http")===-1)?ServerIP+apiUrl:apiUrl,
            //预期服务器返回的数据类型
            dataType:'json',
            data:data, // JSON.stringify(data)  //发送到服务器的数据，对象必须为key/value的格式，jquery会自动转换为字符串格式
            success:function(res){
                console.log("请求接口成功",res);
                resolve(res);
            },
            error:function(err){
                //请求失败函数内容
                console.log("请求接口失败",err);
                reject(err);
            }
        });
    });
}





//去除字符串中的特殊字符
function clearSpecialSymbol(string){
    //替换字符串中的所有特殊字符（包含空格）
    if (string != "") {
        const pattern = /[`~!@#$^\-&*()=|{}':;',\\\[\]\.<>\/?~！@#￥……&*（）——|{}【】'；：""'。，、？\s]/g;
        string = string.replace(pattern, "");
    }
    return string;
}




function _trim(string) {
    // 补全代码
    var reg=/^\s*|\s*$/g;
    //使用正则表达式,\s为空格，^\s为开头的空格，*代表0个或多个，\s*$为结尾的零个或多个空格
    string=string.replace(reg,'');
    return string;
}